package info.motteke.mixivoice4j.http.json;

import info.motteke.mixivoice4j.http.json.comment.create.CreateCommentFactory;
import info.motteke.mixivoice4j.http.json.comment.delete.DeleteCommentFactory;
import info.motteke.mixivoice4j.http.json.comment.get.GetCommentFactory;
import info.motteke.mixivoice4j.http.json.entry.delete.DeleteEntryFactory;
import info.motteke.mixivoice4j.http.json.favorite.create.CreateFavoriteFactory;
import info.motteke.mixivoice4j.http.json.favorite.delete.DeleteFavoriteFactory;
import info.motteke.mixivoice4j.http.json.favorite.get.GetFavoriteFactory;
import info.motteke.mixivoice4j.http.json.photo.get.GetPhotoThumbnailUrlFactory;


/**
 * JSONによる操作に対応したオブジェクトを作成するためのクラスです。
 *
 * @author Y.Wakamatsu
 *
 */
public final class Json {

    /** コメントを取得するためのオブジェクトです。 */
    private static final GetCommentFactory GET_COMMENT = new GetCommentFactory();

    /** イイネ！を取得するためのオブジェクトです。 */
    private static final GetFavoriteFactory GET_FAVORITE = new GetFavoriteFactory();

    /** 投稿を削除するためのオブジェクトです。 */
    private static final DeleteEntryFactory DELETE_ENTRY = new DeleteEntryFactory();

    /** コメントを投稿するためのオブジェクトです。 */
    private static final CreateCommentFactory CREATE_COMMENT = new CreateCommentFactory();

    /** コメントを削除するためのオブジェクトです。 */
    private static final DeleteCommentFactory DELETE_COMMENT = new DeleteCommentFactory();

    /** イイネ！を投稿するためのオブジェクトです。 */
    private static final CreateFavoriteFactory CREATE_FAVORITE = new CreateFavoriteFactory();

    /** イイネ！を削除するためのオブジェクトです。 */
    private static final DeleteFavoriteFactory DELETE_FAVORITE = new DeleteFavoriteFactory();

    private static final GetPhotoThumbnailUrlFactory GET_PHOTO = new GetPhotoThumbnailUrlFactory();
    /**
     * コメントを取得するJSONアクセスを構築するクラスを返します。
     */
    public static GetCommentFactory getCommentFactory() {
        return GET_COMMENT;
    }

    /**
     * イイネ！を取得するJSONアクセスを構築するクラスを返します。
     */
    public static GetFavoriteFactory getFavoriteFactory() {
        return GET_FAVORITE;
    }

    /**
     * 投稿を削除するJSONアクセスを構築するクラスを返します。
     */
    public static DeleteEntryFactory deleteEntryFactory() {
        return DELETE_ENTRY;
    }

    /**
     * コメントを投稿するJSONアクセスを構築するクラスを返します。
     */
    public static CreateCommentFactory createCommentFactory() {
        return CREATE_COMMENT;
    }

    /**
     * コメントを削除するJSONアクセスを構築するクラスを返します。
     */
    public static DeleteCommentFactory deleteCommentFactory() {
        return DELETE_COMMENT;
    }

    /**
     * イイネ！を投稿するJSONアクセスを構築するクラスを返します。
     */
    public static CreateFavoriteFactory createFavoriteFactory() {
        return CREATE_FAVORITE;
    }

    /**
     * イイネ！を削除するJSONアクセスを構築するクラスを返します。
     */
    public static DeleteFavoriteFactory deleteFavoriteFactory() {
        return DELETE_FAVORITE;
    }

    public static GetPhotoThumbnailUrlFactory getPhotoThumbnailUrl() {
        return GET_PHOTO;
    }
}
